Lakshmi Bojja Assessment - Implementation of Bank Portal, Banks Buckets Concepts & Automation Framework#37
Open
meghanabl2112 wants to merge 18 commits intoautomationExamples:mainfrom
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR introduces the completed full-stack Node.js/JavaScript application and the heavy-duty Java Maven Automation Framework requested for the Ally Bank assessment to test the application's core logic.
Methodology
This entire project was reconstructed strictly adhering to a Spec-First Workflow:
Key Features Delivered
AI Assistance Summary
As permitted in the instructions, I used Cursor AI and GitHub Copilot to speed up the delivery of boilerplate code. Specifically, I used them to scaffold Maven dependencies, build out the initial Express routing, and draft baseline Selenium locators and RestAssured mappings.
However, I intentionally took manual control over the core engineering: I designed the POM structure, implemented explicit WebDriver waits to avoid the brittle tests AI often generates, and structured the TestNG suites to ensure they align with real-world QA best practices.
How to Run
###Edge Case Coverage & Defensive Programming
In addition to standard happy paths, this project explicitly handles and tests several critical boundary conditions to ensure enterprise reliability:
Application Guardrails (Backend):
Overdraft Protection: The Express API rejects withdrawal transactions that exceed the current unallocated account balance, returning a strict 422 Unprocessable Entity rather than allowing negative balances.
Account-Type Hardening: Savings Buckets are intrinsically locked to Savings accounts. The API actively blocks bucket creation attempts on standard Checking accounts, returning a 400 Bad Request.
Intelligent Allocation: The auto-distribution algorithm utilizes Math.min(deficit, unallocated) to mathematically guarantee funds are never historically over-distributed past the actual raw balance.
Test Automation Guardrails (QA):
Negative API Scenarios Validated: The RestAssured suite programmatically forces the overdraft and invalid-bucket scenarios, successfully asserting that the server catches them and throws the correct 422 and 400 status codes.
Dynamic UI Synchronization (Selenium): The Page Object Model replaces brittle implicit waits with deliberate state pacing to ensure CSS-driven modal popups are fully rendered in the DOM, completely mitigating notorious ElementNotInteractable exceptions.
Remote Pipeline Readiness: Tests are dynamically routed through WebDriverManager using Chrome Headless mode natively, removing physical UI dependencies to prepare the suite for immediate CI/CD integration.